package controllers;

import models.Usuario;
import play.db.jpa.GenericModel;
import play.libs.F.Option;
import play.mvc.Before;
import play.mvc.Controller;

public class Application extends Controller {

	private static final String USER = "user";

	@Before
	static void addUsuario() {
		
		final Option<Usuario> user = connected();
		if (user.isDefined()) {
			renderArgs.put(USER, user.get());
		} 
	}

	static Option<Usuario> connected() {
		final Option<Usuario> usuario;
		if (renderArgs.get(USER) == null) {
			final String login = session.get(USER);
			if (login == null) {
				usuario = Option.None();
			} else {
				usuario = Option.Some((Usuario)Usuario.find("byLogin", login).first());
			}
		} else {
			usuario = Option.Some(renderArgs.get(USER, Usuario.class));
		}
		return usuario;
	}

	public static void index() {
		render();
	}

	public static void bemVindo() {
		render();
	}

	public static void login(String login, String senha) {
        final Usuario user = Usuario.find("byLoginAndSenha", login, senha)
				.first();
        
		if (user != null) {
			session.put(USER, user.login);
			session.put("nome", user.pessoa.nome);
			bemVindo();
		}
		flash.error("Login ou Senha inválidos");
		index();
	}

	public static void logout() {
		session.clear();
		index();
    }
}